5647b4f4c2e5571127021bbdf92f09b0bdeff9de,SimpleNewsProject/SimpleNews/src/main/java/de/dala/simplenews/ui/CategoryFeedsFragment.java,CategoryFeedsFragment,createFeedClicked,#,201
Before Change
private void createFeedClicked(){
final EditText input = new EditText(getActivity());
DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
switch (which){
case DialogInterface.BUTTON_POSITIVE:
String feedUrl = input.getText().toString(); //TODO validate
Feed feed = new Feed();
feed.setCategoryId(category.getId());
feed.setUrl(feedUrl); //TODO check if valid
long id = DatabaseHandler.getInstance().addFeed(category.getId(), feed, true);
feed.setId(id);
adapter.add(feed);
adapter.notifyDataSetChanged();
break;
case DialogInterface.BUTTON_NEGATIVE:
break;
}
}
};
new AlertDialog.Builder(getActivity()).
setPositiveButton("Ok", dialogClickListener).setNegativeButton("Cancel", dialogClickListener).setTitle(getActivity().getString(R.string.create_category_1_2))
.setMessage("New Feed Url:").setView(input).show();
}
private void editClicked(final Feed feed) {
After Change
final Button negative = (Button) inputLayout.findViewById(R.id.negative);
final EditText input = (EditText) inputLayout.findViewById(R.id.input);
final AlertDialog dialog = new AlertDialog.Builder(getActivity()).setView(view).setTitle(R.string.new_feed_url_header).create();
View.OnClickListener dialogClickListener = new View.OnClickListener() {
@Override
public void onClick(View v) {
switch (v.getId()){
case R.id.positive:
String feedUrl = input.getText().toString().toLowerCase();
if (!feedUrl.startsWith("http://")){
feedUrl = "http://" + feedUrl;
}
final String formattedFeedUrl = feedUrl;
if (UIUtils.isValideUrl(feedUrl)){
crossfade(progress, inputLayout);
NetworkCommunication.loadRSSFeed(feedUrl, new Response.Listener<String>() {
@Override
public void onResponse(String result) {
try {
RSSFeed rssFeed = new RSSParser(new RSSConfig()).parse(new ByteArrayInputStream(result.getBytes("UTF-8")));
if (rssFeed.getItems() == null || rssFeed.getItems().isEmpty()){
invalidFeedUrl(true);
}else{
Feed feed = new Feed();
feed.setCategoryId(category.getId());
feed.setUrl(formattedFeedUrl); //TODO check if valid
long id = DatabaseHandler.getInstance().addFeed(category.getId(), feed, true);
feed.setId(id);
adapter.add(feed);
adapter.notifyDataSetChanged();
dialog.dismiss();
}
} catch (RSSFault ex){
ex.printStackTrace();
invalidFeedUrl(true);
} catch (UnsupportedEncodingException e) {
e.printStackTrace();
invalidFeedUrl(true);
}
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError volleyError) {
invalidFeedUrl(true);
}
});
}else{
invalidFeedUrl(false);
}
break;
case R.id.negative:
dialog.dismiss();
break;
}
}
private void invalidFeedUrl(final boolean hideProgressBar) {
Animation shake = AnimationUtils.loadAnimation(getActivity(),
R.anim.shake);
view.startAnimation(shake);
shake.setAnimationListener(new Animation.AnimationListener() {
@Override
public void onAnimationStart(Animation animation) {}
@Override
public void onAnimationEnd(Animation animation) {
if (hideProgressBar){
crossfade(inputLayout, progress);
Crouton.makeText(getActivity(),getActivity().getString(R.string.not_valid_format), Style.ALERT, inputLayout).show();
}
}
@Override
public void onAnimationRepeat(Animation animation) {}
});
}
};
positive.setOnClickListener(dialogClickListener);
negative.setOnClickListener(dialogClickListener);
dialog.show();
}